import re  # 导入正则表达式模块，用于处理文本分割
from collections import Counter  # 导入计数器，用于快速统计频率
def word_frequency(file_path):
    try:
        with open(file_path, 'r', encoding='utf-8') as file:    #读取文件！
            content = file.read()

        words = re.findall(r"\b[a-zA-Z0-9']+\b", content)
        #   使用正则表达式分割单词，考虑标点符号
        #   匹配一个或者多个字母数字字符

        word_counts = Counter(word.lower()for word in words)
        #   转换成小写，并且统计频率

        sorted_word_freq = dict(sorted(word_counts.items(),
                                     key=lambda x: x[1],
                                     reverse=True))
        # 按频率从高到低排序
        #   sorted() 函数排序：
        #   word_counts.items() - 获取 (单词, 频率) 的列表
        #   key=lambda x: x[1] - 按每个元素的第1个值（即频率）排序
        #   reverse=True - 降序排列（从大到小）
        #   dict() - 把排序后的列表转回字典

        return sorted_word_freq

#测错
    except FileNotFoundError:
        # 如果文件不存在，给出错误提示
        print(f"错误：文件 '{file_path}' 未找到")
        return {}
    except Exception as e:
        # 处理其他可能的错误
        print(f"读取文件时发生错误：{e}")
        return {}

# 测试示例
if __name__ == "__main__":
    # 创建一个测试文件
    test_content = """If all goes well, our paths will no longer cross, but nothing ever goes well."""

    with open('test.txt', 'w', encoding='utf-8') as f:
        f.write(test_content)

    # 测试函数
    result = word_frequency('test.txt')

    for word, freq in result.items():
        print(f"'{word}': {freq}")